/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package ex.util;

/**
 *
 * @author Administrator
 */
public class StateTool {
    
    private int flag3 = 0;
    /**
     * 初始值 ：000
     * 核心算法二进制表示连续的flag。 
     * 每次来标记后，左移数据，尾数补0.
     * 如果是true，则尾数+1，变为1.
     * 如果是false，尾数为0.
     * 取8余数就是保留3位，用这个算法表示3位标志连续为true。
     * 连续n次 ，取2^n 的余数。
     */
    public int Continue3Flag(boolean flag){
        flag3 = flag3 <<1;
        
        if (flag) {           
            flag3 = flag3 + 1;           
        } 
        
        flag3 = flag3 % 8;
        return flag3;
    }
    
   public static void main(String[] args){
       StateTool tool = new StateTool();
       tool.Continue3Flag(true);
       tool.Continue3Flag(true);
       int res = tool.Continue3Flag(true);
       System.out.println(res);
       res = tool.Continue3Flag(false);
       System.out.println(res==6);
       res = tool.Continue3Flag(false);
       System.out.println(res==4);
       res = tool.Continue3Flag(false);
       System.out.println(res==0);
       res = tool.Continue3Flag(true);
       System.out.println(res==1);
   } 
}
